#pragma once

class FileSys
{
public:
	static void			Init();
	static void			AddSource(const std::string& path);
	static void			Dump();

	static IFiletype*	RegisterFile(FileDesc* file);
	static void			UnregisterFile(IFiletype* file);

	static void			RegisterParser(IParser* parser, const std::string& ext);
	static void			UnregisterParser(IParser* parser);

	static IFiletype*	GetFile(const std::string& name);
private:
	FileSys();
	~FileSys();

	static std::vector<IParser*>				_parsers;
	static std::vector<DataSource*>				_datasources;

	static std::map<std::string, DataSource*>	_allfiles;
	static std::map<std::string, IParser*>		_allparsers;
};

